A database is a collection of stored data that is logically related and that is accessible by one or more users. A popular type of database system is the relational database management system (RDBMS), which includes relational tables made up of rows and columns. Each row represents an occurrence of an entity defined by a table, with an entity being a person, place, or thing about which the table contains information.
To extract data from, or to update, a relational table, queries according to a standard database query language (e.g., Structured Query Language or SQL) are used. Examples of SQL statements include INSERT, SELECT, UPDATE, and DELETE.
Many database applications involve the storage of large amounts of data. For improved performance in the storage and processing of such large amounts of data, parallel database systems are used, such as TERADATA® database systems from NCR Corporation. A feature of such parallel database systems is the presence of multiple access modules or data server modules that manage access to data stored in respective portions of a storage system. Data access or manipulation operations can be performed concurrently in the multiple access modules to increase throughput.
Various different types of database operations can be specified by queries submitted to the database system. For example, queries can specify insert-select operations, join-delete operations, and join-update operations. Each of such operations involves a merge step (merging data from one table to another table), a merge-delete step (deleting rows of a target table based on a specified merge condition), or a combination of the two steps. Triggers and join index maintenance requests can also cause performance of insert-select operations, join-delete operations, and join-update operations.
In some versions of TERADATA® database systems, the merge and merge-delete steps associated with insert-select, join-delete, or join-update operations by default are executed on all access modules in the database system. Because of execution on multiple access modules, table-level locks are placed on target tables. If a table-level write lock is placed on a table, subsequent access or modification of the table is blocked. In a parallel environment, a table-level lock reduces the availability of parallel execution of steps specified by queries, triggers, join index maintenance requests, and other database requests.